package abstractEntities;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import org.hibernate.annotations.GenericGenerator;

import entities.Boedep;
import entities.Departamentleader;
import entities.Departamentranking;
import entities.Itens;
import entities.Languagedepartment;
import entities.Leveldepartament;
import entities.Map;
import entities.Mastercoach;
import entities.Team;
import entities.Tutorial;

/**
 * AbstractDepartament entity provides the base persistence definition of the
 * Departament entity. @author MyEclipse Persistence Tools
 */
@MappedSuperclass
public abstract class AbstractDepartament implements java.io.Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = 7373114076252021654L;
	private Integer idDepartament;
	private String departmentName;
	private Integer lockLevel;
	private Set<Departamentranking> departamentrankingsForIdDepartament5 = new HashSet<Departamentranking>(
			0);
	private Set<Itens> itenses = new HashSet<Itens>(0);
	private Set<Tutorial> tutorials = new HashSet<Tutorial>(0);
	private Set<Languagedepartment> languagedepartments = new HashSet<Languagedepartment>(
			0);
	private Set<Departamentleader> departamentleaders = new HashSet<Departamentleader>(
			0);
	private Set<Map> maps = new HashSet<Map>(0);
	private Set<Team> teamsForIdDepartament1 = new HashSet<Team>(0);
	private Set<Team> teamsForIdDepartament3 = new HashSet<Team>(0);
	private Set<Departamentranking> departamentrankingsForIdDepartament1 = new HashSet<Departamentranking>(
			0);
	private Set<Team> teamsForIdDepartament2 = new HashSet<Team>(0);
	private Set<Departamentranking> departamentrankingsForIdDepartament2 = new HashSet<Departamentranking>(
			0);
	private Set<Departamentranking> departamentrankingsForIdDepartament3 = new HashSet<Departamentranking>(
			0);
	private Set<Departamentranking> departamentrankingsForIdDepartament4 = new HashSet<Departamentranking>(
			0);
	private Boedep boedep;
	private Set<Leveldepartament> leveldepartaments = new HashSet<Leveldepartament>(
			0);
	private Set<Mastercoach> mastercoachs = new HashSet<Mastercoach>(0);

	// Constructors

	/** default constructor */
	public AbstractDepartament() {
	}

	/** minimal constructor */
	public AbstractDepartament(String departmentName, Integer lockLevel) {
		this.departmentName = departmentName;
		this.lockLevel = lockLevel;
	}

	/** full constructor */
	public AbstractDepartament(String departmentName, Integer lockLevel,
			Set<Departamentranking> departamentrankingsForIdDepartament5,
			Set<Itens> itenses, Set<Tutorial> tutorials,
			Set<Languagedepartment> languagedepartments,
			Set<Departamentleader> departamentleaders, Set<Map> maps,
			Set<Team> teamsForIdDepartament1, Set<Team> teamsForIdDepartament3,
			Set<Departamentranking> departamentrankingsForIdDepartament1,
			Set<Team> teamsForIdDepartament2,
			Set<Departamentranking> departamentrankingsForIdDepartament2,
			Set<Departamentranking> departamentrankingsForIdDepartament3,
			Set<Departamentranking> departamentrankingsForIdDepartament4,
			Boedep boedep, Set<Leveldepartament> leveldepartaments,
			Set<Mastercoach> mastercoachs) {
		this.departmentName = departmentName;
		this.lockLevel = lockLevel;
		this.departamentrankingsForIdDepartament5 = departamentrankingsForIdDepartament5;
		this.itenses = itenses;
		this.tutorials = tutorials;
		this.languagedepartments = languagedepartments;
		this.departamentleaders = departamentleaders;
		this.maps = maps;
		this.teamsForIdDepartament1 = teamsForIdDepartament1;
		this.teamsForIdDepartament3 = teamsForIdDepartament3;
		this.departamentrankingsForIdDepartament1 = departamentrankingsForIdDepartament1;
		this.teamsForIdDepartament2 = teamsForIdDepartament2;
		this.departamentrankingsForIdDepartament2 = departamentrankingsForIdDepartament2;
		this.departamentrankingsForIdDepartament3 = departamentrankingsForIdDepartament3;
		this.departamentrankingsForIdDepartament4 = departamentrankingsForIdDepartament4;
		this.boedep = boedep;
		this.leveldepartaments = leveldepartaments;
		this.mastercoachs = mastercoachs;
	}

	// Property accessors
	@GenericGenerator(name = "generator", strategy = "increment")
	@Id
	@GeneratedValue(generator = "generator")
	@Column(name = "idDepartament", unique = true, nullable = false)
	public Integer getIdDepartament() {
		return this.idDepartament;
	}

	public void setIdDepartament(Integer idDepartament) {
		this.idDepartament = idDepartament;
	}

	@Column(name = "departmentName", nullable = false, length = 50)
	public String getDepartmentName() {
		return this.departmentName;
	}

	public void setDepartmentName(String departmentName) {
		this.departmentName = departmentName;
	}

	@Column(name = "lockLevel", nullable = false)
	public Integer getLockLevel() {
		return this.lockLevel;
	}

	public void setLockLevel(Integer lockLevel) {
		this.lockLevel = lockLevel;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament5")
	public Set<Departamentranking> getDepartamentrankingsForIdDepartament5() {
		return this.departamentrankingsForIdDepartament5;
	}

	public void setDepartamentrankingsForIdDepartament5(
			Set<Departamentranking> departamentrankingsForIdDepartament5) {
		this.departamentrankingsForIdDepartament5 = departamentrankingsForIdDepartament5;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departament")
	public Set<Itens> getItenses() {
		return this.itenses;
	}

	public void setItenses(Set<Itens> itenses) {
		this.itenses = itenses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departament")
	public Set<Tutorial> getTutorials() {
		return this.tutorials;
	}

	public void setTutorials(Set<Tutorial> tutorials) {
		this.tutorials = tutorials;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departament")
	public Set<Languagedepartment> getLanguagedepartments() {
		return this.languagedepartments;
	}

	public void setLanguagedepartments(
			Set<Languagedepartment> languagedepartments) {
		this.languagedepartments = languagedepartments;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departament")
	public Set<Departamentleader> getDepartamentleaders() {
		return this.departamentleaders;
	}

	public void setDepartamentleaders(Set<Departamentleader> departamentleaders) {
		this.departamentleaders = departamentleaders;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departament")
	public Set<Map> getMaps() {
		return this.maps;
	}

	public void setMaps(Set<Map> maps) {
		this.maps = maps;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament1")
	public Set<Team> getTeamsForIdDepartament1() {
		return this.teamsForIdDepartament1;
	}

	public void setTeamsForIdDepartament1(Set<Team> teamsForIdDepartament1) {
		this.teamsForIdDepartament1 = teamsForIdDepartament1;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament3")
	public Set<Team> getTeamsForIdDepartament3() {
		return this.teamsForIdDepartament3;
	}

	public void setTeamsForIdDepartament3(Set<Team> teamsForIdDepartament3) {
		this.teamsForIdDepartament3 = teamsForIdDepartament3;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament1")
	public Set<Departamentranking> getDepartamentrankingsForIdDepartament1() {
		return this.departamentrankingsForIdDepartament1;
	}

	public void setDepartamentrankingsForIdDepartament1(
			Set<Departamentranking> departamentrankingsForIdDepartament1) {
		this.departamentrankingsForIdDepartament1 = departamentrankingsForIdDepartament1;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament2")
	public Set<Team> getTeamsForIdDepartament2() {
		return this.teamsForIdDepartament2;
	}

	public void setTeamsForIdDepartament2(Set<Team> teamsForIdDepartament2) {
		this.teamsForIdDepartament2 = teamsForIdDepartament2;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament2")
	public Set<Departamentranking> getDepartamentrankingsForIdDepartament2() {
		return this.departamentrankingsForIdDepartament2;
	}

	public void setDepartamentrankingsForIdDepartament2(
			Set<Departamentranking> departamentrankingsForIdDepartament2) {
		this.departamentrankingsForIdDepartament2 = departamentrankingsForIdDepartament2;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament3")
	public Set<Departamentranking> getDepartamentrankingsForIdDepartament3() {
		return this.departamentrankingsForIdDepartament3;
	}

	public void setDepartamentrankingsForIdDepartament3(
			Set<Departamentranking> departamentrankingsForIdDepartament3) {
		this.departamentrankingsForIdDepartament3 = departamentrankingsForIdDepartament3;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departamentByIdDepartament4")
	public Set<Departamentranking> getDepartamentrankingsForIdDepartament4() {
		return this.departamentrankingsForIdDepartament4;
	}

	public void setDepartamentrankingsForIdDepartament4(
			Set<Departamentranking> departamentrankingsForIdDepartament4) {
		this.departamentrankingsForIdDepartament4 = departamentrankingsForIdDepartament4;
	}

	@OneToOne(fetch = FetchType.LAZY, mappedBy = "departament")
	public Boedep getBoedep() {
		return this.boedep;
	}

	public void setBoedep(Boedep boedep) {
		this.boedep = boedep;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departament")
	public Set<Leveldepartament> getLeveldepartaments() {
		return this.leveldepartaments;
	}

	public void setLeveldepartaments(Set<Leveldepartament> leveldepartaments) {
		this.leveldepartaments = leveldepartaments;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "departament")
	public Set<Mastercoach> getMastercoachs() {
		return this.mastercoachs;
	}

	public void setMastercoachs(Set<Mastercoach> mastercoachs) {
		this.mastercoachs = mastercoachs;
	}

}